home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat5 / lno.z / lno
Encoding:
Text File  |  1998-10-30  |  27.9 KB  |  562 lines

  1. LNO(5)                                                Last changed: 3-10-98
  2.  
  3.  
  4. NNAAMMEE
  5.      LNO - Compiler loop nest optimization option group
  6.  
  7. SSYYNNOOPPSSIISS
  8.      --LLNNOO:: ...
  9.  
  10. IIMMPPLLEEMMEENNTTAATTIIOONN
  11.      IRIX systems
  12.  
  13. DDEESSCCRRIIPPTTIIOONN
  14.      This man page describes the loop nest optimization options accepted by
  15.      the ff9900(1), ff7777(1), CCCC(1), cccc(1), and cc8899(1) commands.
  16.  
  17.      The --LLNNOO:: option group specifies options and transformations performed
  18.      on loop nests.  The --LLNNOO:: option group is enabled only if the --OO33
  19.      option is also specified on the compiler command line.
  20.  
  21.      For information on the LNO options that are in effect during a
  22.      compilation, use the --LLIISSTT::ooppttiioonnss==OONN option.
  23.  
  24.      You can specify more than one suboption to the --LLNNOO:: option either by
  25.      using colons to separate each suboption or by specifying multiple
  26.      options on the command line.  For example, the following command lines
  27.      are equivalent:
  28.  
  29.           f90 -LNO:auto_dist=ON:outer=OFF b.f
  30.           f90 -LNO:auto_dist=ON -LNO:outer=OFF b.f
  31.  
  32.      Some --LLNNOO:: suboptions are specified with a setting that either enables
  33.      or disables the feature.  To enable a feature, specify the argument
  34.      either alone or with ==11, ==OONN, or ==TTRRUUEE.  To disable a feature, specify
  35.      the suboption with either ==00, ==OOFFFF, or ==FFAALLSSEE.  For example, the
  36.      following command lines are equivalent:
  37.  
  38.           f90 -LNO:auto_dist:blocking=OFF:oinvar=FALSE a.f
  39.           f90 -LNO:auto_dist=1:blocking=0:oinvar=OFF a.f
  40.  
  41.      For brevity, this man page shows only the OONN or OOFFFF settings to
  42.      suboptions, but 00, 11, TTRRUUEE, and FFAALLSSEE are also allowed as settings. In
  43.      addition, this man page shows the abbreviated form for some of the
  44.      suboption names.  You can use either the abbreviation or the complete
  45.      suboption name when using the suboptions. The following is a list of
  46.      the abbreviations and the complete suboption names:
  47.  
  48.           Complete name                 Abbreviation
  49.  
  50.           oouutteerr__uunnrroollll                  oouu
  51.  
  52.           aassssoocciiaattiivviittyy                 aassssoocc
  53.  
  54.           cclleeaann__mmiissss__ppeennaallttyy            ccmmpp
  55.  
  56.           ddiirrttyy__mmiissss__ppeennaallttyy            ddmmpp
  57.  
  58.           ccaacchhee__ssiizzee                    ccss
  59.  
  60.           iiss__mmeemmoorryy__lleevveell               iiss__mmeemm
  61.  
  62.           lliinnee__ssiizzee                     llss
  63.  
  64.           ttllbb__eennttrriieess                   ttllbb
  65.  
  66.           ttllbb__cclleeaann__mmiissss__ppeennaallttyy        ttllbbccmmpp
  67.  
  68.           pprreeffeettcchh__lleevveell                ppff
  69.  
  70.      See "F77 LNO Directives" at the end of this man page for a summary of
  71.      the F77 directives for LNO.  See the _M_I_P_S_P_r_o _7 _F_o_r_t_r_a_n _9_0 _C_o_m_m_a_n_d_s _a_n_d
  72.      _D_i_r_e_c_t_i_v_e_s _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, publication SR-3907, for a discussion of
  73.      the Fortran 90 LNO directives.  See _M_I_P_S_p_r_o _C _a_n_d _C++ _P_r_a_g_m_a_s, for
  74.      descriptions of the C and C++ LNO #pragma directives.
  75.  
  76.      The descriptions to the suboptions to --LLNNOO:: are divided into the
  77.      following categories:
  78.  
  79.                * General options
  80.  
  81.                * Transformation options
  82.  
  83.                * Cache memory management options
  84.  
  85.                * TLB options
  86.  
  87.                * Prefetch options
  88.  
  89.      The --LLNNOO option accepts the following general suboptions:
  90.  
  91.      SSuubbooppttiioonn   AAccttiioonn
  92.  
  93.      aauuttoo__ddiisstt[[ == (( OONN||OOFFFF ))]]
  94.                  Distributes local arrays in common blocks that are
  95.                  accessed in parallel.  The default is OOFFFF.
  96.  
  97.                  This optimization works with either automatic parallelism
  98.                  or parallelism using directives; it is always safe, and
  99.                  does not affect the layout of arrays in virtual space, and
  100.                  does not incur addressing overhead.
  101.  
  102.      ffiissssiioonn==_n   Controls loop fission.  _n can be one of the following:
  103.  
  104.                  0   Disables loop fission.
  105.  
  106.                  1   Performs normal fission as necessary.  This is the
  107.                      default.
  108.  
  109.                  2   Specifies that fission be tried before fusion.
  110.  
  111.                  If --LLNNOO::ffiissssiioonn==_n and --LLNNOO::ffuussiioonn==_n are both set to 1 or
  112.                  to 2, fusion is performed.
  113.  
  114.      ffuussiioonn==_n    Controls loop fusion.  _n can be one of the following:
  115.  
  116.                  0   Disables loop fusion.
  117.  
  118.                  1   Performs standard outer loop fusion.  This is the
  119.                      default.
  120.  
  121.                  2   Specifies that outer loops should be fused, even if it
  122.                      means partial fusion.
  123.  
  124.                  The compiler attempts fusion before fission.  The compiler
  125.                  performs partial fusion if not all levels can be fused in
  126.                  the multiple-level fusion.
  127.  
  128.                  If --LLNNOO==ffiissssiioonn==_n and --LLNNOO::ffuussiioonn==_n are both set to 1 or
  129.                  to 2, fusion is performed.
  130.  
  131.      ffuussiioonn__ppeeeelliinngg__lliimmiitt==_n
  132.                  Sets the limit for the number of iterations allowed to be
  133.                  peeled in fusion, where _n >= 0.  By default, _n=5.
  134.  
  135.      ggaatthheerr__ssccaatttteerr==_n
  136.                  Performs gather-scatter optimizations.  _n can be one of
  137.                  the following:
  138.  
  139.                  0   Disables all gather-scatter optimization.
  140.  
  141.                  1   Performs gather-scatter optimizations on non-nested IIFF
  142.                      statements.  This is the default.
  143.  
  144.                  2   Performs multi-level gather-scatter optimizations.
  145.  
  146.      iiggnnoorree__pprraaggmmaass[[ == (( OONN||OOFFFF ))]]
  147.                  Specifies that the command line options override
  148.                  directives in the source file.  The default is OOFFFF.
  149.  
  150.      nnoonn__bblloocckkiinngg__llooaaddss[[ == (( OONN||OOFFFF ))]]
  151.                  (C/C++ and F77 only) Specifies whether the processor
  152.                  blocks on loads.  If not set, the default of the current
  153.                  processor is used.
  154.  
  155.      ooiinnvvaarr[[ == (( OONN||OOFFFF ))]]
  156.                  Controls outer loop hoisting.  The default is OONN.
  157.  
  158.      oopptt==_n       Controls the LNO optimization level.  _n can be one of the
  159.                  following:
  160.  
  161.                  0   Disables nearly all loop nest optimization.
  162.  
  163.                  1   Peforms full loop nest transformations.  This is the
  164.                      default.
  165.  
  166.      oouutteerr[[ == (( OONN||OOFFFF ))]]
  167.                  Enables or disables outer loop fusion.  The default is OONN.
  168.  
  169.      vviinnttrr[[ == (( OONN||OOFFFF ))]]
  170.                  Specifies that vectorizable versions of the math intrinsic
  171.                  functions should be used.  The default is OONN.
  172.  
  173.                  For information on the math intrinsic functions, see
  174.                  mmaatthh(3M).
  175.  
  176.      The loop transformation arguments allow you to control cache blocking,
  177.      loop unrolling, and loop interchange.  They are as follows:
  178.  
  179.      bblloocckkiinngg[[ == (( OONN||OOFFFF ))]]
  180.                Specify bblloocckkiinngg==OOFFFF to disable the cache blocking
  181.                transformation.  The default is OONN.
  182.  
  183.      bblloocckkiinngg__ssiizzee==[_n_1][,,_n_2]
  184.                Specifies a block size that the compiler must use when
  185.                performing any blocking.  When using the MIPSpro 7 Fortran
  186.                90 compiler, specify a value for _n_2 when using a 2-level
  187.                cache.  For _n_1 or _n_2, specify a positive integer number that
  188.                represents the number of iterations.
  189.  
  190.      iinntteerrcchhaannggee[[ == (( OONN||OOFFFF ))]]
  191.                Specifies whether or not loop interchange optimizations are
  192.                performed.  The default is OONN.
  193.  
  194.      oouu==_n      Indicates that all outer loops for which unrolling is legal
  195.                should be unrolled by _n, where _n is a positive integer.  The
  196.                compiler unrolls loops by this amount or not at all.
  197.  
  198.      oouu__ddeeeepp[[ == (( OONN||OOFFFF ))]]
  199.                Specifies that for loops with 3-deep, or deeper, loop nests,
  200.                the compiler should outer unroll the wind-down loops that
  201.                result from outer unrolling loops further out.  This results
  202.                in large code size, but it generates much faster code
  203.                whenever wind-down loop execution costs are important.  The
  204.                default is OONN.
  205.  
  206.      oouu__ffuurrtthheerr==_n
  207.                Specifies whether or not the compiler performs outer loop
  208.                unrolling on wind-down loops.  Specify an integer for _n.
  209.  
  210.      oouu__mmaaxx==_n  Indicates that the compiler can unroll as many as _n copies
  211.                per loop, but no more.
  212.  
  213.      oouu__pprroodd__mmaaxx==_n
  214.                Indicates that the product of unrolling of the various outer
  215.                loops in a given loop nest is not to exceed _n, where _n is a
  216.                positive integer.  The default is 16.
  217.  
  218.      ppwwrr22[[ == (( OONN||OOFFFF ))]]
  219.                (C/C++ and F77 only) Specifies whether to ignore the leading
  220.                dimension (set to OOFFFF to ignore).
  221.  
  222.                You can disable additional unrolling by specifying
  223.                --LLNNOO::oouu__ffuurrtthheerr==999999999999.  Unrolling is enabled as much as is
  224.                sensible by specifying --LLNNOO::oouu__ffuurrtthheerr==33.
  225.  
  226.      Certain arguments allow you to describe the target cache memory
  227.      system.  The numbering in the following arguments starts with the
  228.      cache level closest to the processor and works outward:
  229.  
  230.      aassssoocc11==_n, aassssoocc22==_n, aassssoocc33==_n, aassssoocc44==_n
  231.                Specifies the cache set associativity.  For a fully
  232.                associative cache, such as main memory, set _n to any
  233.                sufficiently large number, such as 128.  Specify a positive
  234.                integer for _n.  Specifying _n=00 indicates that there is no
  235.                cache at that level.
  236.  
  237.      ccmmpp11==_n, ccmmpp22==_n, ccmmpp33==_n, ccmmpp44==_n
  238.      ddmmpp11==_n, ddmmpp22==_n, ddmmpp33==_n, ddmmpp44==_n
  239.                Specifies, in processor cycles, the time for a clean miss
  240.                (ccmmpp_x==) or dirty miss (ddmmpp_x==) to the next outer level of the
  241.                memory hierarchy.  This number is approximate because it
  242.                depends upon a clean or dirty line, read or write miss, etc.
  243.                Specify a positive integer for _n.  Specifying _n=00 indicates
  244.                that there is no cache at that level.
  245.  
  246.      ccss11==_n, ccss22==_n, ccss33==_n, ccss44==_n
  247.                Specifies the cache size.  The value _n can be 0, or it can
  248.                be a positive integer followed by one of the following
  249.                letters:  kk, KK, mm, or MM.  This specifies the cache size in
  250.                Kbytes or Mbytes.  Specifying 0 indicates that there is no
  251.                cache at that level.
  252.  
  253.                The default cache size depends on your system.  You can use
  254.                the --LLIISSTT::ooppttiioonnss==OONN option to see the default cache sizes
  255.                used during your compilation.
  256.  
  257.      iiss__mmeemm11[[ == (( OONN||OOFFFF ))]]
  258.      iiss__mmeemm22[[ == (( OONN||OOFFFF ))]]
  259.      iiss__mmeemm33[[ == (( OONN||OOFFFF ))]]
  260.      iiss__mmeemm44[[ == (( OONN||OOFFFF ))]]
  261.                Specifies that certain memory hierarchies should be modeled
  262.                as memory, not cache.  The default is OOFFFF for each option.
  263.  
  264.                Blocking can be attempted for this memory hierarchy level,
  265.                and blocking appropriate for memory, rather than cache, is
  266.                applied.  No prefetching is performed, and any prefetching
  267.                options are ignored.  If an --OOPPTT::iiss__mmeemm_x[[ == (( OONN||OOFFFF ))]]
  268.                option is specified, the corresponding aassssoocc_x==_n
  269.                specification is ignored, any ccmmpp_x==_n and ddmmpp_x==_n options on
  270.                the command line are ignored.
  271.  
  272.      llss11==_n, llss22==_n, llss33==_n, llss44==_n
  273.                Specifies the line size, in bytes.  This is the number of
  274.                bytes, specified in the form of a positive integer number,
  275.                _n, that are moved from the memory hierarchy level further
  276.                out to this level on a miss.  Specifying _n=0 indicates that
  277.                there is no cache at that level.
  278.  
  279.      Certain arguments control the TLB.  The TLB is a cache for the page
  280.      table, and it is assumed to be fully associative.  The TLB control
  281.      arguments are as follows:
  282.  
  283.      ppss11==_n, ppss22==_n, ppss33==_n, ppss44==_n
  284.                Specifies the number of bytes in a page.  Specify a positive
  285.                integer for _n.  The default _n depends on your system
  286.                hardware.
  287.  
  288.      ttllbb11==_n, ttllbb22==_n, ttllbb33==_n, ttllbb44==_n
  289.                Specifies the number of entries in the TLB for this cache
  290.                level.  Specify a positive integer for _n.  The default _n
  291.                depends on your system hardware.
  292.  
  293.      ttllbbccmmpp11==_n, ttllbbccmmpp22==_n, ttllbbccmmpp33==_n, ttllbbccmmpp44==_n
  294.      ttllbbddmmpp11==_n, ttllbbddmmpp22==_n, ttllbbddmmpp33==_n, ttllbbddmmpp44==_n
  295.                Specifies the number of processor cycles it takes to service
  296.                a clean TLB miss (the ttllbbccmmpp_x== options) or dirty TLB miss
  297.                (the ttllbbddmmpp_n== options).  Specify a positive integer for _n.
  298.                The default _n depends on your system hardware.
  299.  
  300.      The following arguments control the prefetch operation:
  301.  
  302.      ppff11[[ == (( OONN||OOFFFF ))]]
  303.      ppff22[[ == (( OONN||OOFFFF ))]]
  304.      ppff33[[ == (( OONN||OOFFFF ))]]
  305.      ppff44[[ == (( OONN||OOFFFF ))]]
  306.                Selectively disables and enables prefetching for cache level
  307.                _x, for ppff_x[[ == (( OONN||OOFFFF ))]]
  308.  
  309.                When --rr1100000000 is in effect, ppff11==OONN and ppff22==OONN by default.  At
  310.                any other --rr_n setting, OOFFFF is in effect for all cache
  311.                levels.
  312.  
  313.      pprreeffeettcchh==_n
  314.                Specifies levels of prefetching.  _n can be one of the
  315.                following:
  316.  
  317.                0   Disables all prefetching.  This is the default when
  318.                    --rr44000000, --rr55000000, or --rr88000000 is in effect.
  319.  
  320.                1   Enables conservative prefetching.  This is the default
  321.                    when --rr1100000000 is in effect.
  322.  
  323.                2   Enables aggressive prefetching.
  324.  
  325.      pprreeffeettcchh__aahheeaadd==_n
  326.                Prefetches the specified number of cache lines ahead of the
  327.                reference.  Specify a positive integer for _n.  The default
  328.                is 2.
  329.  
  330.      pprreeffeettcchh__mmaannuuaall[[ == (( OONN||OOFFFF ))]]
  331.                Specifies whether manual prefetches (through directives)
  332.                should be respected or ignored.
  333.  
  334.                pprreeffeettcchh__mmaannuuaall==OOFFFF ignores manual prefetches.  This is the
  335.                default when --rr88000000, --rr55000000, or --rr44000000 is in effect.
  336.  
  337.                pprreeffeettcchh__mmaannuuaall==OONN respects manual prefetches.  This is the
  338.                default when --rr1100000000 is in effect.
  339.  
  340. FF7777 LLNNOO DDiirreeccttiivveess
  341.      Directives within a program unit apply only to that program unit,
  342.      reverting to the default values at the end of the program unit.
  343.      Directives that occur outside of a program unit alter the default
  344.      value, and therefore apply to the rest of the file from that point on,
  345.      until overridden by a subsequent directive.
  346.  
  347.      Directives within a file override the command line options by default.
  348.      To have the command line options override directives, use the command
  349.      line option:
  350.  
  351.           -LNO:ignore_pragmas
  352.  
  353.    FFiissssiioonn aanndd FFuussiioonn DDiirreeccttiivveess
  354.      * CC**$$** AAGGGGRREESSSSIIVVEE IINNNNEERR LLOOOOPP FFIISSSSIIOONN: Fission this loop in
  355.        inner_fission phase to as many loops as possible.  This must be
  356.        followed by a inner loop and has no effect if that loop is not inner
  357.        any more after the SNL phase.
  358.  
  359.      * CC**$$** FFIISSSSIIOONN [[((_n))]] or CC**$$** FFIISSSSIIOONNAABBLLEE:  Fission the enclosing _n
  360.        level of loops after this directive. Perform legality test unless a
  361.        ffiissssiioonnaabbllee directive is also specified. Does not re-order
  362.        statements.
  363.  
  364.      * CC**$$** FFUUSSEE [[((_n [[,,_l_e_v_e_l]] ))]] or CC**$$** FFUUSSAABBLLEE:  Fuse the following _n
  365.        immediately adjacent loops. Fusion is attempted on each pair of
  366.        adjacent loops and the _l_e_v_e_l, by default, is the determined by the
  367.        maximal SNL levels of the fused loops, although partial fusion is
  368.        allowed.  Iterations may be peeled as needed during fusion; the
  369.        peeling limit is 5 or the number specified by the
  370.        --LLNNOO::ffuussiioonn__ppeeeelliinngg__lliimmiitt flag.  When the FFUUSSAABBLLEE directive is
  371.        present, no legality test is done and the fusion is done up to the
  372.        maximal SNL levels where the iteration numbers matched for each pair
  373.        of loops to be matched.  The default value for _n is  2.
  374.  
  375.      * CC**$$** NNOO FFIISSSSIIOONN:  The loop following this directive should not be
  376.        fissioned in either fiz_fuse phase or inner_fission phase. Its inner
  377.        loops, however, are allowed to be fissioned.
  378.  
  379.      * CC**$$** NNOO FFUUSSIIOONN:  The loop following this directive should not be
  380.        fused with other loops.
  381.  
  382.    SSNNLL TTrraannssffoorrmmaattiioonn DDiirreeccttiivveess
  383.      The parallelizing preprocessor may do some transformation for
  384.      parallelism that violate some of these directives.
  385.  
  386.      * CC**$$** IINNTTEERRCCHHAANNGGEE ((_I,, _J [[,,_K ......]] )):  Loops _I, _J and _K (in any order)
  387.        must directly follow this directive and be perfectly nested inside
  388.        each other. If they are not perfectly nested, the compiler may
  389.        perform loop distribution to make them so, or may ignore the
  390.        annotation, or may apply imperfect interchange (this is not likely).
  391.        The compiler attempts to reorder loops so that _I is outermost, then
  392.        _J, then _K.  The compiler may ignore this directive.  There must be a
  393.        minimum of 2 indexes in the directive.
  394.  
  395.      * CC**$$** NNOO IINNTTEERRCCHHAANNGGEE:  Prevents the compiler from involving the loop
  396.        directly following this directive in a permutation, or any loop
  397.        nested within this loop.
  398.  
  399.      * CC**$$** BBLLOOCCKKIINNGG SSIIZZEE ((_n_1,,_n_2)) or CC**$$** BBLLOOCCKKIINNGG SSIIZZEE ((_n_1)) or CC**$$**
  400.        BBLLOOCCKKIINNGG SSIIZZEE ((,,_n_2)): If the specified loop is involved in a blocking
  401.        for the primary or secondary cache, it will have a blocksize of _n_1
  402.        or _n_2. The compiler will try to include this loop within such a
  403.        block.  If a blocking size is specified as 0, the loop is not
  404.        actually stripped, but the entire loop is inside the block.
  405.  
  406.      * CC**$$** NNOO BBLLOOCCKKIINNGG: Prevent the compiler from involving this loop in a
  407.        cache blocking.
  408.  
  409.      * CC**$$** UUNNRROOLLLL ((_n [[,,_n_2]] )): This directive suggests that _n-_1 copies of
  410.        the loop body be added to the inner loop. If the loop that this
  411.        directive directly preceeds is an inner loop, then it indicates
  412.        standard unrolling. If the loop that this directive directly
  413.        preceeds is not innermost, then outer loop unrolling is performed.
  414.        _n must be at least 1.  If _n=1 then no unrolling will be performed.
  415.        If _n=0, then the default unrolling should be applied.  _n_2 is
  416.        ignored.
  417.  
  418.      * CC**$$** BBLLOOCCKKAABBLLEE ((_I,,_J [[,,_K ......]] )): The _I, _J and _K loops must be
  419.        adjacent and nested within each other, although not necessarily
  420.        perfectly nested.  This directive informs the compiler that these
  421.        loops may legally be involved in a blocking with each other, even if
  422.        the compiler would consider such a transformation illegal.  The
  423.        loops are also interchangeable and unrollable.  This directive does
  424.        not instruct the compiler which of these transformations to apply.
  425.        You must specify at least 2 loop indexes in the directive.
  426.  
  427.    PPrreeffeettcchh DDiirreeccttiivveess
  428.      * CC**$$** PPRREEFFEETTCCHH ((_n[[,,_n]])): Specify prefetching for each level of the
  429.        cache. The scope is the entire function containing the directive.  _n
  430.        can be one of the following values:
  431.  
  432.        00    prefetching off (default for all processors except R10000)
  433.  
  434.        11    prefetching on, but conservative
  435.  
  436.        22    prefetching on, and aggressive (default when prefetch is on)
  437.  
  438.      * CC**$$** PPRREEFFEETTCCHH__MMAANNUUAALL ((_n)):  Specify if manual prefetches (through
  439.        directives) should be respected or ignored.  Scope: Entire function
  440.        containing the directive.  _n can be one of the following values:
  441.  
  442.        00    ignore manual prefetches (default for mmiippss33 and earlier)
  443.  
  444.        11    respect manual prefetches (default for mmiippss44)
  445.  
  446.      * CC**$$** PPRREEFFEETTCCHH__RREEFF__DDIISSAABBLLEE==_A [[,, ssiizzee==_n_u_m]]:  This directive explicitly
  447.        disables prefetching all references to array _A in the current
  448.        function. The auto-prefetcher runs (if enabled) ignoring array _A.
  449.        The ssiizzee is used for volume analysis.  Scope: Entire function
  450.        containing the directive.  ssiizzee==_n_u_m is the size of the array
  451.        references in this loop, in Kbytes.  This is an optional argument
  452.        and must be a constant.
  453.  
  454.      * CC**$$** PPRREEFFEETTCCHH__RREEFF==_a_r_r_a_y-_r_e_f,,[[ssttrriiddee==[[_s_t_r]] [[,,_s_t_r]]]],, [[lleevveell==[[_l_e_v]]
  455.        [[,,_l_e_v]]]],, [[kkiinndd==[[_r_d/_w_r]]]],, [[ssiizzee==[[_s_z]]]]: This directive generates a
  456.        single prefetch instruction to the specified memory location. It
  457.        searches for array references that match the supplied reference in
  458.        the current loop-nest.  If such a reference is found, that reference
  459.        is connected to this prefetch node with the specified latency. If no
  460.        such reference is found, this prefetch node stays free-floating and
  461.        is scheduled "loosely".
  462.  
  463.        All references to this array in this loop-nest are ignored by the
  464.        automatic prefetcher (if enabled).
  465.  
  466.        If the size is supplied, then the auto-prefetcher (if enabled)
  467.        reduces the effective cache size by that amount in its calculations.
  468.  
  469.        The compiler tries to issue one prefetch per stride iteration, but
  470.        cannot guarantee it. Redundant prefetches are preferred to
  471.        transformations (such as inserting conditionals) which incur other
  472.        overhead.
  473.  
  474.        Scope: No scope. Just generates a prefetch instruction.
  475.  
  476.        The following arguments are used with this option:
  477.  
  478.        _a_r_r_a_y-_r_e_f Required.  The reference itself, for example, AA((ii,, jj)).
  479.  
  480.        _s_t_r       Optional. Prefetch every _s_t_r iterations of this loop.  The
  481.                  default is 1.
  482.  
  483.        _l_e_v       Optional.  The level in memory hierarchy to prefetch. The
  484.                  default is 2.  If _l_e_v=1, prefetch from L2 to L1 cache. If
  485.                  _l_e_v=2, prefetch from memory to L1 cache.
  486.  
  487.        _r_d/_w_r     Optional.  The default is read/write.
  488.  
  489.        _s_z        Optional.  The size (in Kbytes) of the array referenced in
  490.                  this loop. This must be a constant.
  491.  
  492.    DDeeppeennddeennccee AAnnaallyyssiiss DDiirreeccttiivveess
  493.      * CCDDIIRR$$ IIVVDDEEPP: This applies only to inner loops. Liberalize dependence
  494.        analysis.  Given two memory references, where at least one is loop
  495.        variant, ignore any loop-carried dependences between the two
  496.        references. The following are examples of this directive.
  497.  
  498.           do i = 1,n
  499.             b(k) = b(k) + a(i)
  500.           enddo
  501.  
  502.      IIVVDDEEPP does not break the dependence because bb((kk)) is not loop-variant.
  503.  
  504.           do i=1,n
  505.              a(i) = a(i-1) + 3
  506.           enddo
  507.  
  508.      IIVVDDEEPP does break the dependence but the compiler warns the user that
  509.      it is breaking an obvious dependence.
  510.  
  511.           do i=1,n
  512.              a(b(i)) = a(b(i)) + 3.
  513.           enddo
  514.  
  515.      IIVVDDEEPP does break the dependence.
  516.  
  517.           do i = 1,n
  518.              a(i) = b(i)
  519.              c(i) = a(i) + 3.
  520.           enddo
  521.  
  522.      IIVVDDEEPP does not break the dependence on aa[[ii]] because it is within an
  523.      iteration.
  524.  
  525.      If --OOPPTT::ccrraayy__iivvddeepp==OONN,, Cray semantics are used and all lexically
  526.      backwards dependences are broken. The following are examples:
  527.  
  528.           do i=1,n
  529.              a(i) = a(i-1) + 3.
  530.           enddo
  531.  
  532.      IIVVDDEEPP does break the dependence but the compiler warns the user that
  533.      it's breaking an obvious dependence.
  534.  
  535.           do i=1,n
  536.              a(i) = a(i+1) + 3.
  537.           enddo
  538.  
  539.      IIVVDDEEPP does not break the dependence because the dependence is from the
  540.      load to the store, and the load comes lexically before the store.
  541.  
  542.      If --OOPPTT::lliibbeerraall__iivvddeepp==OONN,, all dependences are broken.
  543.  
  544. SSEEEE AALLSSOO
  545.      cccc(1), CCCC(1), ccoorrdd(1), ddssoo(1), ff7777(1), ff9900(1), ffppmmooddee(1), hhiinnvv(1),
  546.      lldd(1), mmaakkee(1), ppiixxiiee(1), ppmmaakkee(1), pprrooff(1), rrlldd(1), ssmmaakkee(1).
  547.  
  548.      mmaatthh(3M).
  549.  
  550.      aauuttoo__pp(5), ggpp__oovveerrffllooww(5), iippaa(5), oopptt(5), ppee__eennvviirroonn(5).
  551.  
  552.      _M_I_P_S_p_r_o _C _a_n_d _C++ _P_r_a_g_m_a_s, publication 007-3587-001
  553.  
  554.      _C _L_a_n_g_u_a_g_e _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, publication 007-0701-120
  555.  
  556.      _C_o_m_p_i_l_e_r _I_n_f_o_r_m_a_t_i_o_n _F_i_l_e (_C_I_F) _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, publication SR-2401
  557.  
  558.      _M_I_P_S_P_r_o _7 _F_o_r_t_r_a_n _9_0 _C_o_m_m_a_n_d_s _a_n_d _D_i_r_e_c_t_i_v_e_s _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l,
  559.      publication SR-3907
  560.  
  561.      This man page is available only online.
  562.